//
// Created by win10 on 2024/12/31.
//
#include <stdio.h>
#define MAX_EXPONENT 2000  // 假设多项式的最大指数为2000

int main() {
    int n, m, i, j;
    int a[MAX_EXPONENT + 1] = {0};  // 存储第一个多项式的系数
    int b[MAX_EXPONENT + 1] = {0};  // 存储第二个多项式的系数
    int result[MAX_EXPONENT * 2 + 1] = {0};  // 存储乘法结果
    int sum[MAX_EXPONENT + 1] = {0};  // 存储加法结果

    // 输入第一个多项式
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        int coef, exp;
        scanf("%d %d", &coef, &exp);
        a[exp] += coef;  // 将系数添加到对应的指数位置
    }
    // 输入第二个多项式
    scanf("%d", &m);
    for (i = 0; i < m; i++) {
        int coef, exp;
        scanf("%d %d", &coef, &exp);
        b[exp] += coef;  // 将系数添加到对应的指数位置
    }
    // 计算多项式加法：直接加系数
    for (i = 0; i <= MAX_EXPONENT; i++) {
        sum[i] = a[i] + b[i];  // 对应指数的系数相加
    }
    // 计算多项式乘法：通过两重循环计算系数和指数
    for (i = 0; i <= MAX_EXPONENT; i++) {
        if (a[i]) {
            for (j = 0; j <= MAX_EXPONENT; j++) {
                if (b[j]) {
                    result[i + j] += a[i] * b[j];  // 系数相乘，指数相加
                }
            }
        }
    }
    // 输出乘法结果
    int first = 1;
    for (i = MAX_EXPONENT * 2; i >= 0; i--) {
        if (result[i]) {
            if (!first) printf(" ");
            printf("%d %d", result[i], i);
            first = 0;
        }
    }
    if (first) printf("0 0");  // 如果乘法结果是零多项式
    printf("\n");
    // 输出加法结果
    first = 1;
    for (i = MAX_EXPONENT; i >= 0; i--) {
        if (sum[i]) {
            if (!first) printf(" ");
            printf("%d %d", sum[i], i);
            first = 0;
        }
    }
    if (first) printf("0 0");  // 如果加法结果是零多项式
    printf("\n");
    return 0;
}
